package com.manager.common.tcp.decode;

import com.manager.common.tcp.decode.impl.BusinessDecode;
import com.manager.common.tcp.decode.impl.HeartDecode;
import com.manager.common.tcp.constant.TcpDataType;
import com.manager.common.utils.SocketByteConvertUtils;

public class DecodeFactory {

    public static BaseDecode getDecode(byte[] data) {
        int type = SocketByteConvertUtils.bigEndian1ByteToInt(data[2]);
        TcpDataType tcpDataType = TcpDataType.getTcpDataType(type);
        if(tcpDataType == null){
            return null;
        }
        BaseDecode baseDecode = null;
        switch (TcpDataType.getTcpDataType(type)){
            case HEARTBEAT:
                baseDecode = new HeartDecode();
                break;
            default:
                baseDecode = new BusinessDecode(TcpDataType.getTcpDataType(type));
                break;
        }
        baseDecode.decode(data);
        return baseDecode;
    }
}
